//
//  MKHomeTableViewController.swift
//  Weibo
//
//  Created by mac on 15/12/12.
//  Copyright © 2015年 MK. All rights reserved.
//

//URLStr = "https://api.weibo.com/2/statuses/home_timeline.json"
//GET
//param =["access_token"]

//FIXME: - 首页微博下拉刷新 上拉更新数据

//新浪微博的的id是自增的方式，并且会过滤掉与本用户无关的id的微博

//since_id int64  指定此参数，返回ID比since_id大的微博(比since_id时间晚的微博)，默认为0
//max_id int64 	指定此参数，返回ID小于或等于max_id的微博，默认为0。

import UIKit
import AFNetworking
import SVProgressHUD

private let indentifier = "cell"
class MKHomeTableViewController: MKBaseTableViewController {
    
    private lazy var statusArr = [MKStatusModel]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //没有登录的情况下
        if !userLogin {
            visitor.setupInfo("登录后，别人评论你的微博，发给你的消息，都会在这里收到通知", imaName: nil)
            return
        }
        //获取新浪微博的数据
        gotDataFromWeibo()
        
        //FIXME: - 注册cell类
        tableView.registerClass(MKCell.self, forCellReuseIdentifier: indentifier)
        
        //测试行高
        //tableView.rowHeight = 300
        //预估行高->自动计算行高
        tableView.estimatedRowHeight = 300
        tableView.rowHeight = UITableViewAutomaticDimension
        //分割线不要
        tableView.separatorStyle = .None
        
        //下拉刷新的接口 -系统接口 UIRefreshControl -> UIControl(跟Button一样继承自UIControl) - 所以可以实例化一个对象 然后addTarget来监听(通过valueChange)
        // When a user has pulled-to-refresh, the UIRefreshControl fires its UIControlEventValueChanged event.
        refreshControl = UIRefreshControl()
        refreshControl?.addTarget(self, action: "gotDataFromWeibo", forControlEvents: .ValueChanged)
    }
    
    
    //添加 - 系统下拉刷新的监听响应方法
    @objc private func gotDataFromWeibo() {
        //获取数据
        //since_id应该是 下拉刷新的 最顶部的那个cell的(数组的第一个＝最顶部的cell)
        let since_id = statusArr.first?.id ?? 0
        MKStatusViewModel.homeRequestData(since_id) { (arr) -> () in
            
            //网络请求成功关闭下拉刷新
            self.refreshControl!.endRefreshing()
            
            guard let list = arr else {
                return
            }
            
            if since_id > 0 {
                //下拉刷新 加载数据 - 更改数据的接收方式 不能把原有的微博都覆盖掉
                //self.statusArr = list
                self.statusArr = list + self.statusArr
            } else {
                //首次 加载数据
                self.statusArr = list
            }
            
            //刷新数据
            self.tableView.reloadData()
        }
        
    }
}

extension MKHomeTableViewController {
    
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusArr.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(indentifier, forIndexPath: indexPath) as! MKCell
        
        cell.statusModel = statusArr[indexPath.row]
        
        return cell
    }
}